package com.leyou.item.dto;

import com.leyou.common.dto.BaseDTO;
import com.leyou.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class SpecParamDTO extends BaseDTO {

    private Long id;
    /**
     * 商品分类id
     */
    private Long categoryId;
    /**
     * 规格参数所属的组id
     */
    private Long groupId;
    /**
     * 参数名
     */
    private String name;
    /**
     * 是否是数字类型参数，true或false
     * 注意，numeric是数据库关键字，为了防止查询语句出错，需要给字段加上转义字符：==`==
     */
    private Boolean numeric;
    /**
     * 数字类型参数的单位，非数字类型可以为空
     */
    private String unit;
    /**
     * 是否是sku通用属性，true或false
     */
    private Boolean generic;
    /**
     * 是否用于搜索过滤，true或false
     */
    private Boolean searching;
    /**
     * 数值类型参数，如果需要搜索，则添加分段间隔值，如CPU频率区间：0.5-1.0
     */
    private String segments;
    /**
     * 参数的可选值，不允许用户自己填值
     */
    private String options;

    /**
     * 规格参数值
     */
    private Object value;

    public SpecParamDTO(BaseEntity entity) {
        super(entity);
    }

    public static <T extends BaseEntity> List<SpecParamDTO> convertEntityList(Collection<T> list) {
        if(list == null){
            return Collections.emptyList();
        }
        return list.stream().map(SpecParamDTO::new).collect(Collectors.toList());
    }
}
